In many environments, applications, virtual machines, and other computing clients may utilize data redundancy and a highly available computing environment. Shared storage environments may enable multiple computing platforms to access data contained on shared storage. This may facilitate the migration of environments from one computing platform to a second. Mirrored storage environments may provide data redundancy. Computing platforms utilizing mirrored storage environments may utilize techniques to improve performance of mirrored storage. For example, dirty region logging may be utilized.
Dirty region logging may be utilized to logically divide a unit of storage, such as a volume, into one or more portions or regions. Dirty region logging may then maintain indicators which specify one or more portions or regions that have been written to, or are “dirty”. While writes to mirrored storage may occur in parallel, a system crash may occur when writes to a unit of storage have completed but writes to a mirrored unit of storage have not completed. If a system crash occurs without dirty region logging, recovery of mirrored storage may require recovery of an entire unit of storage. Dirty region logging may enable the recovery of only the one or more portions or regions of a unit of storage whose indicators correspond to a dirty state.
Dirty region logging (DRL) is merely one storage management technique that may be utilized to improve performance in an environment utilizing mirrored storage. Dirty region logging may maintain indicators written to the mirrored storage itself. However, an environment utilizing dirty region logging may also maintain dirty region logging information in memory to minimize required disk input/output (I/O).
Dirty region logging information maintained in memory may improve performance in an environment utilizing mirrored storage, even during normal operations when recovery is not necessary. For example, if multiple writes occur to a single region or portion of a unit of storage, an indicator for that portion may only need to be set once. If a process is writing data to a portion which has previously been marked as dirty, the process may verify that the indicator is set in memory and may skip a disk read to verify that the dirty indicator is set for that portion and/or a disk write to set the dirty indicator for that portion.
A second example of storage management memory structures may be caching algorithms and/or data associated with caching algorithms. Caching algorithms may determine which portions of storage should be stored in memory. For example, a least recently used caching algorithm may “age out” data in memory that has not been recently requested by a process. Aging out data may mean that it is written to disk and flushed from memory to free memory space for data that has been more recently used. Caching algorithms may be used for a variety of storage management issues including determining which portion of a dirty region log to maintain in memory.
In environments requiring high availability, multiple computing platforms may be communicatively coupled to shared storage and/or the storage may be shared between multiple computing platforms. This may enable a secondary host to support a computing environment on a primary host. The secondary host may enable the continued processing of a computing environment migrated from a primary host to the secondary host. The migration may occur due to a problem on a first computing platform, for load balancing reasons, for scheduled maintenance, or for other reasons. Applications, virtual machines, or other computing environments may experience performance degradation due to the lack of storage management memory structures after migration to the target computing platform. Building one or more storage management memory structures may require significant storage input/output, processing, and other resource utilization. Thus, the overhead of building storage management memory structures on a target computing platform may further degrade performance.
In view of the foregoing, it may be understood that there are significant problems and shortcomings associated with current technologies enabling migrated environments utilizing mirrored storage.